The OOPOS3 device can control the location of an axis moved basically from digital controls of forward, backward and slow; the location of the axis is acquired via a bi-directional transducer.
The movement commands can be sent directly to the motor in AC via contactors, or be sent to an inverter.
The OOPOS3 device includes all functions necessary for the implementation of ON/OFF placements, in addition to special functions such as automatic recalculation of inertia, the mechanical backlash recovery management, managing the slowdown is proportional to the speed and a complete search of presets to synchronize the actual position of the axis with the internal value of the device.
In the configuration file (.CNF), the BUS section must be declared so that you have the hardware resources required for the implementation of the OOPOS3 device.
There must be at least a bi-directional meter. The device can also use an interrupt input and a line for preset search functions.
In the INTDEVICE section of the .CNF file must be add the following definition:
![]() | It is necessary that each definition are present on the same line. In case you do not want to assign a resource, for example OutFre, You must always enter in the appropriate field the string X.X. |
|---|
;--------------------------------- ; Internal device declaration ;--------------------------------- INTDEVICE <device name> OOPOS3 TCamp IQCTL ILine IAZero OutAva OutInd OutDir OutMov OutRal OutFre
where:
| <device name> | The name assigned to the device. |
| OOPOS3 | Keyword that identifies the on/off positioner device. |
| TCamp | Sampling time device (1÷255 ms). |
| IQCTL | Bidirectional incremental counter address. |
| ILine | Interrupt line dedicated to the zero pulse. |
| IAZero | Input to enable the capture of zero-pulse. |
| OutAva | Address of output used as forward output. |
| OutInd | Address of output used as backward output. |
| OutDir | Address of output used as direction output. |
| OutMov | Address of output used as motion output. |
| OutRal | Address of output used as slowdown output. |
| OutFre | Address of output used as brake output. |
;-------------------------------- ; Internal device declaration ;-------------------------------- INTDEVICE Axis OOPOS3 0004 2.CNT01 1 2.IN01 2.OUT01 2.OUT02 X.X X.X 2.OUT3 X.X
The digital outputs for managing the placement are enable/disable depending on the position of the axis (counter), appropriately controlled by the device depending on the parameterization.
The ON/OFF positioning can executed in both directions (forward/backward) with the possibility of retrieving games, for deletion of any mechanical backlash.
The accuracy with which was built the mechanics is critical to the outcome of the placements. It is impossible to find, on the placements, the precision of the motion of bodies if the moving parts have loose backlash of the tenth. Also on placements of vertical axes very heavy (for example a press or vertical cutter), the inertia of movement upwards is less than the inertia of movement down.
In these and other situations implementation of recovery backlash in positioning significantly improves accuracy.
![]() | The positioning is always concluded in the same direction. For example, whereas placements with recovery forward backlash (see Picture 1), for both forward and reverse positioning, the movement of the axle ends always moving from left to right (forward). |
|---|
| Picture 1: positioning diagram with recovery backlash. |
![]() |
In the Picture 2 Describes the various stages of a ON/OFF placement forward without the implementation of recovery backlash.
The excitement of moving outputs (in this casa the forward output) moving the axis; increasing the count acquired and the appropriate device parameters involve the activation of several resignations to motion management, up to the end of placement and the activation of tolerance output (positioning report concluded correctly).
| Picture 2: forward positioning without the recovery backlash. |
![]() |
In the Picture 3 describes the various stages of a ON/OFF forward placement with the implementation of recovery backlash in backward direction.
The activation of (forward / backward) outputs moving the axis; the increasing of the count acquired and the appropriate device parameters involve the activation of other outputs to the motion management, up to the end of placement and activation of the output of tolerance (positioning report concluded correctly).
| Picture 3: forward positioning with backward recovery backlash. |
![]() |
For complete understanding of this description you should have read the previous paragraph (FORWARD POSITIONING WITHOUT RECOVERY BACKLASH).
The OOPOS3 device needs some necessary hardware resources, as a bidirectional counter input (CNTxx) and the digital outputs.
The following procedure is used to test the counter input.
INIT Axis
WAIT Axis:st_init
Axis:measure = 1000 Axis:pulse = 4000
Axis:posit = 0
![]() | Before moving the axis, check the proper operation of emergency equipment and protection. |
|---|
The following procedure is used to verify the operation of the digital outputs of forward, backward and slowdown moving the axis with the manual commands of the device.
To continue, verify that the Axis device is initialized and with the correct encoder resolution.
Axis:maxpos = 999999 Axis:minpos = -999999
MANFFW Axis
WAIT NOT Axis:st_still AND Axis:st_movfwd
STOP Axis
MANFBW Axis
WAIT NOT Axis:st_still AND Axis:st_movbwd
STOP Axis
MANSFW Axis
WAIT NOT Axis:st_still AND Axis:st_movfwd AND Axis:st_movslow
STOP Axis
The OOPOS3 device acquires the position of via bidirectional transmitter signals; these signals are used by an internal counter. In general, this counter does not express, directly the position of the axis in the unit of measure required by the application. The device does not have within it the cntratio parameter, but let the installer can work with unfinished encoder resolutions by setting the data as space covered in a round encoder (measure) and number of pulses/Rev encoder (pulse). The relationship between measure and pulse is the encoder resolution and must have values between 1 and 0.000935.
1) The measure parameter is inserted in units without decimal points (for example 100.0 mm are inserted 1000 tenths of a millimeter). 2) The pulse parameter is inserted in bits encoder x 4 (for example if used an encoder with 1024 pulses/Rev, is inserted 4096, If the measure parameter is calculated on an encoder turn).
You have to control a rotating table that have the accuracy of 0,1° with an encoder with 1024 pulses/Rev mounted directly; you will set the following values:
Axis:measure = 3600
Axis:pulse = 4096
Axis:decpt = 1
For execute the positioning to 14.6 degrees you need to enter:
Axis:setpos = 146
To run properly the OOPOS3 device, it's must enter a few basic parameters.
Axis:minpos = xxx (xxx = minimum axis value expressed in Um). Axis:maxpos = yyy (yyy = maximum axis value expressed in Um).
Axis:slowpos = zzz (zzz = slow axis value expressed in Um).
Axis:slowdly = ttt (ttt = deceleration time expressed in s/100).
Axis:tollp = tpx (tpx = positive tolerance value expressed in Um/10). Axis:tolln = tnx (tpn = negative tolerance value expressed in Um/10).
Axis:tinv = inversion time expressed in s/100
Axis:ninert = 1
Axis:inertmode = 1
Axis:toldly = tdly (tdly = activation time delay tolerance expressed in ms).
In the ON/OFF placements the space of slowdown should be long enough to bring the axis at the slow speed (of end placement), which enter the inertial range and conclude your placement in tolerance. It is essential that the speed at the time of entry in the inertial range is always equal, so that inertia is repetitive and continuous recalculations are avoided that would cause an inaccuracy in positioning.
Slowdown quota is too long: This allows the axis to end positioning by moving the slow speed, but is maintained for too much space, extending considerably the time of positioning.
Slowdown quota is too short: the axis approaches at the quota with a speed too high to allow the mechanical rapid stop; the succession of the system compromises the placement, stopping the axle out of the tolerance range set.
In some cases the OOPOS3 device must manage the axis where positioning speed is variable. For this reason the OOPOS3 device has a system of automatic calculation of the slowdown quotaq, so the speed of end placement and the inertia value are repetitive, regardless of the speed of the axis.
The OOPOS3 device has two methods (selected by the slowtype parameter), to calculate the slowdown:
To calculate the slowdown value you need setting to acquire the axis speed.
The unit of speed is in function of the following variables:
Defines if the speed values are expressed in Um at the minute (unitvel = 0) or in Um at the second (unitvel = 1).
Whether to set the values of speed in multiples of the fundamental units Um. For example, if the fundamental unit of measure Um=mm, and unitvel=1 you get the speed indicator in the vel variable:
Theoretical method
You have to apply the formula:
Speed = Frequency * ….
Pratical method
It's based on the speed reading detected by the device in the vel parameter giving the drive a known voltage. If driving permits, provide the maximum working voltage axis and then read the value in the vel parameter; if you provided a lower voltage, the maximum speed will be proportional to the voltage supplied.
Enter the value of the maximum speed detected in maxvel parameter.
The device calculates the slowdown based on the formula:
Slowdown = (Maximum slowdown x Speed)/Maximum speed
![]() | The calculation of the slowdown, as evidenced by the chart, one of the two maxslow or minslow limits cannot exceed. |
|---|
Where:
Maximum slowdown = corresponds to the maxslow variable.
Minimum slowdown = corresponds to the minslow variable.
Calculated slowdown = corresponds to the exeslow variable.
Maximum speed = corresponds to the maxvel variable.
Instantaneous speed = corresponds to the vel variable.
The device auto-calculates the slowdown based on the formula:
Slowdown = (Maximum slowdown x Speed2)/Maximum speed
Where:
Maximum slowdown = corresponds to the maxslow variable.
Minimum slowdown = corresponds to the minslow variable.
Calculated slowdown = corresponds to the exeslow variable.
Maximim speed = corresponds to the maxvel variable.
Instantaneous speed = corresponds to the vel variable.
The values of inertia can be introduced directly by the operator or automatically calculated from the device; the mode is chosen with setting the inertmode parameter.
The device manage the subdivision of the axis path (between the minpos and maxpos) in more same bands; the number of bands is defined by the ninert parameter. This way you can have inertia as a function of the band within which concludes the positioning.
By setting the dobiner = 0 parameter, the device manage a unique inertia value independently of direction of movement (forward or backward).
By setting the dobiner = 1 parameter, the device manage two inertia values for each band, one for the forward direction and another for the backward direction. This mode is applicable, for example, when you move the vertical axis.
For storing inertia, are used the iner01÷ iner08 parameters (in the event that dobiner = 0) or the iner01÷ iner16 parameters (if dobiner = 1):
| dobiner = 0 | dobiner = 1 | |
|---|---|---|
| iner01 | Inertia 1 band | Forward intertia 1 band |
| iner02 | Inertia 2 band | Backward intertia 1 band |
| iner03 | Inertia 3 band | Forward intertia 2 band |
| iner04 | Inertia 4 band | Backward intertia 2 band |
| iner05 | Inertia 5 band | Forward intertia 3 band |
| iner06 | Inertia 6 band | Backward intertia 3 band |
| iner07 | Inertia 7 band | Forward intertia 4 band |
| iner08 | Inertia 8 band | Backward intertia 4 band |
| iner09 | n.u. | Forward intertia 5 band |
| iner10 | n.u. | Backward intertia 5 band |
| iner11 | n.u. | Forward intertia 6 band |
| iner12 | n.u. | Backward intertia 6 band |
| iner13 | n.u. | Forward intertia 7 band |
| iner14 | n.u. | Backward intertia 7 band |
| iner15 | n.u. | Forward intertia 8 band |
| iner16 | n.u. | Backward intertia 8 band |
By definition, the forward inertia is used only forward in movements (forward output enabled) while, the backward inertia, is used only for backward movements (backward output enabled).
The calculation of inertias about the various bands can be done automatically by the device; at the end of each placement, the device quantify the value of inertia for use in subsequent placements that will end in the same band.
You can define a set of customizations related to automatic recalculation of inertia.
With the setting of this parameter is used to define when the device execute the recalculating of inertia; there are two methods:
Automatic recalculation of inertia is executed by OOPOS3 device when ended the activation delay tolerance (toldly), at the end of which the axis is considered definitely in stop.
If the value of the inertia recalculated diverges beyond a certain value from inertia in use, you can have an alert (st_erin = 1 state); this alert may in any case be disabled.
The preset searchb is a procedure to synchronize the value of the posit parameter with the actual position of the axis. Consists to load a value in the counter (previously stored) at the time of acquisition of transducer zero pulse; you can execute the preset search with a transducer without the zero pulse, but you need an input (cam or sensor) by 'enabling zero-pulse transducer'.
Formerly to the preset search the counter acquired can have any value and the axis can be located anywhere. For execute the upload of preset quota, the axis you must direct to the “enabling zero-pulse transducer” input.
The initial direction of motion is defined by prsdir parameter:
prsdir = 0 the axis will start getting forward.
prsdir = 1 the axis will start getting backward.
![]() | During the preset search the software the maxpos and minpos limits are disabled. |
|---|
The preset search start is given from the PRESET command.
If during the preset search is given again the PRESET command, the direction of motion of the axis is reversed, preserving the operation of the preset search direction.
It should be noted that the presets quota (prspos) must always be between the minimum and maximum quotas and after the load of the preset quota, the axis is automatically positioned to the preset quota.
![]() | The zero pulse enable input has a hardware filter which delays the acquisition and so influence the precision of the loading. |
|---|
![]() | Axis speed should be low enough to allow the acquisition of the entrance. |
|---|
The axis towards to the sensor connected to the enable input zero pulse with a normal placement speed. The st_prson state reports that the preset procedure is in progress. When, during the path, the axis bump into the enabling zero-pulse transducer input, reverses the direction and takes slow speed.
To the disabling of enabling zero-pulse transducer input is loaded the preset quota on the counter (posit parameter).
The axis stop, the st_prson state is disabled and the st_prsok state is aenabled to signal the end of search. This State remains active until the starting of a new presets procedure. When the system is power up this state is always to zero (Picture 1).
| Picture 1: preset load using the only enabling cam. |
![]() |
Lasse si dirige verso il sensore collegato allingresso d'abilitazione impulso di zero con la
normale velocità di posizionamento. Lo stato st_prson segnala che la procedura di preset è
in corso. Quando, nella sua corsa, lasse incontra lingresso d'abilitazione impulso di zero
trasduttore, inverte la direzione ed assume la velocità lenta.
Alla disattivazione dellingresso di abilitazione impulso di zero è abilitata la lettura del primo
impulso di zero fornito dal trasduttore e, al momento dellacquisizione di questo segnale, è
caricata la quota di preset nel conteggio (parametro posit).
Lasse si ferma, lo stato st_prson si disattiva e lo stato st_prsok si attiva per segnalare la
conclusione della ricerca. Questo stato rimane attivo fino allavviamento di una nuova procedura
di preset. Allaccensione del sistema questo stato é sempre a zero (Figura 2).
| Figura 2: caricamento preset utilizzando camma di abilitazione ed impulso di zero trasduttore. |
![]() |
Con questa procedura la ricerca di preset non è abilitata. Il comando di caricamento della quota di preset è fornito dallattivazione dellingresso di abilitazione impulso di zero è attivato lo stato st_prsok.
Il device visualizza sempre la posizione assoluta dellasse; per eseguire posizionamenti incrementali
é necessario disporre di uno strumento per sottrarre o sommare un determinato
valore al conteggio (posit) senza introdurre errori. Il cambio di conteggio può essere eseguito
anche con una scrittura diretta nel nuovo valore nel parametro posit.
Volendo sottrarre 100 unità di misura al conteggio è possibile:
Asse:posit = Asse:posit - 100
Questa operazione introduce un errore perché impone la posizione posit = -100, quando
lasse poteva avere una posizione intermedia tra una unità di misura e la successiva (es.
100.3). Questa frazione (0.3) è persa ed il ripetersi di queste operazioni provoca
laccumularsi di un errore non trascurabile.
Il comando DELCNT somma al conteggio una quantità pari al parametro delta senza perdere
la parte frazionaria della posizione:
Asse:delta = -100 DELCNT Asse
Il comando di DELCNT può essere inviato solamente con asse fermo (st_still=1)
La lettura della posizione dellasse risulta essere di 2 unità e si trova nel punto A. Si vuole
sommare al conteggio posit tre unità di misura.
Con le istruzioni:
Asse:posit = Asse:posit + 2
lasse assume la nuova posizione B.
Con le istruzioni:
Asse:delta = 2 DELCNT Asse
E' raggiunta la posizione C.
Il comando è inviabile solamente se lasse è fermo, condizione di st_still = 1.
La modifica del valore di risoluzione (cntratio) o la scrittura della variabile posit, provoca lazzeramento dei resti della conversione.
Si noti che con le prime istruzioni lasse ha compiuto un delta inferiore a 3 unità e quindi è
stato introdotto un errore.
Se si devono inviare comandi DELCNT in successione, é conveniente calcolare la grandezza
da sommare ed inviare una sola volta il comando; in caso contrario prestare attenzione a
non inviare comandi successivi senza interporre una istruzione di lettura su parametro device.
Esempio:
Asse:delta = 3 DELCNT Asse WAIT Asse:st_init Asse:delta = 40 DELCNT Asse
Una scrittura del tipo:
Asse:posit = 1000 Asse:delta = - 100 DELCNT Asse DELCNT Asse ...
Non assicura che il valore di posit sia di 800, come ci si aspetterebbe da due sottrazioni consecutive, mentre è possibile che sia di 900 per la sovrapposizione dei due comandi. La scrittura diventa quindi:
Asse:posit = 1000 Asse:delta = - 100 DELCNT Asse WAIT Asse:st_init DELCNT Asse WAIT Asse:st_init ...
Con lutilizzo del device OOPOS3 le uscite di movimento sono ad uso esclusivo del device;
pertanto non possono essere utilizzate da altri device o dallapplicativo.
Il comando di REGOFF permette di mettere a disposizione tali risorse, disabilitandone
laggiornamento da parte del device OOPOS3. Questa condizione, verificata con lo stato
st_regoff = 1, pone il device in uno stato di attesa in cui comunque continua ad aggiornare la
posizione dellasse (conteggio acquisito).
Il comando di REGON ripristina le normali condizioni rassegnando al device laggiornamento
delle uscite.
Nelle applicazioni, in cui non è necessario movimentare contemporaneamente più assi, luso
dei comandi REGON/REGOFF permette di utilizzare sempre le stesse uscite di movimento
risparmiando risorse hardware.
Per evitare conflitti e malfunzionamenti, deve necessariamente essere attivo un solo device per ogni gruppo d'uscite di movimento.
Le procedure fin qui descritte hanno permesso di completare le fasi di definizione delle risorse
hardware necessarie al device, di verifica dei collegamenti elettrici, di impostazione dei
parametri fondamentali del device.
Ora é possibile eseguire una semplice movimentazione dellasse.
Asse:setpos = quota di posizionamento (in Um compresa tra minpos e maxpos).
START Asse
Lintroduzione dei parametri relativi alle inerzie (iner01 ÷ iner16), alle tolleranze (tolp e toln)
ed allo spessore utensile (tool), è proposta con una cifra in più, in modo da poter introdurre il
dato con una precisione 10 volte maggiore.
Per un buon funzionamento del sistema QPS, la risoluzione dellencoder deve essere inferiore
a 40000; se il coefficiente moltiplicativo è compreso tra 40001 e 399999 linfluenza
dellultima cifra diminuirà gradatamente fino a cessare completamente quando tale coefficiente
è pari a 400000.
Il sistema QPS è introdotto anche in fase di lettura dei dati sopra descritti.
Questo sistema consente, se la risoluzione del trasduttore lo permette, di aggiustare e verificare il posizionamento di tipo On/Off con una risoluzione 10 volte superiore a quella impostata.
Gli esempi sono riferiti ad un sistema di posizionamento con precisione del millimetro.
La presenza di un errore nel device è segnalato dallo stato st_error.
Quando st_error è uguale a 1, troviamo presente sulla variabile errcode il tipo di errore intervenuto
(vedi tabella) e nella variabile errvalue una indicazione sulla causa dellerrore.
Se il device va in errore, per riprendere la lavorazione bisogna cancellare lo stato st_error attraverso il comando RSERR.3
La presenza di un warning nel sistema camming viene segnalato dallo stato st_warning.
Essendo causato da un evento non grave ed essendo garantita in questa situazione la gestione
dellasse slave, lasse slave continua il suo lavoro.
Quando st_warning è uguale a 1, troviamo presente sulla variabile wrncode il tipo di warning
intervenuto (vedi tabella) e nella variabile wrnvalue una indicazione sulla causa che ha provocato
il warning.
| Codice | Priorità | Descrizione |
|---|---|---|
| 1 | 0 | Comando non eseguito |
Per cancellare lo stato st_warning è necessario inviare il comando RSWRN.
Il nome del parametro, stato o comando viene riportato alla sinistra della tabella.
R
Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device
mantiene lo stato precedentemente definito), oppure lo stato che assume al momento
dellinizializzazione del device.
Se il device non necessita d'inizializzazione il campo R indica il valore che il parametro o
stato assume allaccensione della scheda.
R = Ritentivo
0 = Al momento dellinizializzazione del device il valore è forzato a zero.
1 = Al momento dellinizializzazione del device il valore è forzato a uno.
- = Al momento dellinizializzazione del device è presentato il valore significativo.
D
Indica la dimensione del parametro.
F = Flag
B = Byte
W = Word
L = Long
S = Single Float
Sono descritte tutte le condizioni necessarie affinché il parametro sia considerato corretto
o perché il comando venga accettato.
In alcuni casi sono specificati dei valori limite per laccettazione del parametro: se sono introdotti
dei valori esterni ai limiti impostati, il dato viene comunque accettato; pertanto devono
essere previsti opportuni controlli dellapplicativo tali da garantire il corretto funzionamento.
Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere
soddisfatte; in caso contrario il comando non è inviato.
A
Indica il modo d'accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.
I comandi a disposizione per gestire il device sono elencati sotto l'ordine di priorità decrescente. Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore. Per esempio se il device riceve nello stesso tempo di campionamento i comandi CNTUNLOCK e CNTLOCK, per primo esegue il comando CNTLOCK e poi quello di CNTUNLOCK lasciando perciò il contatore libero di contare.
| Nome | Condizioni | Descrizione |
|---|---|---|
| INIT | st_init = 0 | Initialization Comando d'inizializzazione device. Se il device non é inizializzato, non vengono eseguiti i calcoli relativi all'asse e quindi rimane inattivo. All'accensione è possibile scaricare tutti i parametri in DPR; successivamente, con comando INIT l'asse sarà inizializzato, eseguendo i calcoli una sola volta. Attiva lo stato st_init. |
| STOP | st_init = 1 | Stop Eccita le uscite di movimento per comandare l'asse verso la quota impostata. |
| START | st_init = 1 st_still = 1 st_regoff = 0 | Start Eccita le uscite di movimento per comandare l'asse verso la quota impostata. |
| CNTLOCK | st_init = 1 | Counter lock Blocca l'acquisizione del conteggio asse anche se il trasduttore continua ad inviare i segnali. In questa fase l'eventuale spostamento dell'asse non è rilevato. Disabilita il caricamento della quota di preset sul conteggio. Attiva lo stato st_cntlock. |
| CNTUNLOCK | st_init = 1 | Counter unlock Sblocca il conteggio dell'asse. E' ripresa la lettura dei segnali inviati dal trasduttore e l'aggiornamento del conteggio. Disattiva lo stato st_cntlock. |
| CNTREV | st_init = 1 | Counter reverse Consente di invertire le fasi del trasduttore all'interno della scheda. E' quindi invertito il senso del conteggio (incremento/decremento). Attiva lo stato st_cntrev. |
| CNTDIR | st_init = 1 st_regoff = 1 | Counter direct Il conteggio dell'asse non viene invertito. Disattiva lo stato st_cntrev. |
| PRESET | st_init = 1 st_regoff = 0 | Preset Start ricerca preset asse. Viene dato inizio alla procedura di ricerca di preset con le modalità impostate con i parametri prsmode e prsdir. Se la ricerca di preset è già in esecuzione, il comando esegue l'inversione del senso di ricerca. Attiva lo stato st_prson e disattiva lo stato st_prsok |
| MANSFW | st_init = 1 st_regoff = 0 posit < maxpos | Manual slow forward Posizionamento manuale avanti lento. Vengono eccitate le uscite di avanti e di rallentamento. |
| MANSBW | st_init = 1 st_regoff = 0 posit > minpos | Manual slow backward Posizionamento manuale indietro lento. Vengono eccitate le uscite di indietro e di rallentamento. |
| MANFFW | st_init = 1 st_regoff = 0 posit < maxpos | Manual forward Posizionamento manuale avanti. Viene eccitata l'uscita di avanti. |
| MANFBW | st_init = 1 st_regoff = 0 posit > minpos | Manual backward Posizionamento manuale indietro. Viene eccitata l'uscita di indietro. |
| REGON | st_init = 1 | Regulation ON Abilita la regolazione e l'aggiornamento delle uscite di movimento, nonché tutti i comandi di movimento. Disattiva lo stato st_regoff. |
| REGOFF | st_init = 1 | Regulation OFF Disabilita la regolazione e l'aggiornamento delle uscite di movimento, nonché tutti i comandi di movimento. Solamente l'uscita di freno continua ad essere aggiornata. Attiva lo stato st_regoff. |
| DELCNT | st_init = 1 st_still = 0 | Delta counter Questo comando è accettato solamente se l'asse è fermo; il conteggio (posizione dell'asse) è modificato sommandogli algebricamente il valore specificato nella variabile delta. |
| RSERR | - | Reset error Azzera lo stato st_error. |
| RSWRN | - | Reset warning Azzera lo stato st_warning. |
| RSPRSOK | - | Reset preset OK Azzera lo stato st_prsok |
| Nome | D | R | A | Condizioni Descrizione | |
|---|---|---|---|---|---|
| measure | L | R | R-W | - | Measure (1 ÷ 999999) Indica lo spazio, in unità di misura, percorso dall'asse per ottenere gli impulsi encoder * 4 impostati nel parametro pulse. Questo parametro è utilizzato per il calcolo della risoluzione dell'asse con la formula: Risoluzione = measure* 4 / pulse La risoluzione deve avere un valore compreso tra 0.00374 e 4.00000 |
| pulse | L | R | R-W | - | Pulse encoder (1÷ 999999) Indica gli impulsi moltiplicato 4 forniti dallencoder slave per ottenere lo spazio impostato nel parametro measure. Questo parametro è utilizzato per il calcolo della risoluzione dellasse con la formula: Risoluzione = measure* 4 / pulse, La risoluzione deve avere un valore compreso tra 0.00374 e 4.00000 st_camex = 0, st_prson = 0. |
| posit | L | R | R-W | - | Actual position (-999999 ÷ 999999) È il valore della posizione istantanea dell'asse in unità di misura definite dai parametri c measure e pulse. Valore espresso in unità di misura (Um). |
| encoder | L | R | R | - | Encoder É il valore della posizione istantanea dell'asse. Valore espresso in bit encoder * 4. |
| minpos | L | R | R-W | - | Minimum position (-999999 ÷ 999999) Definisce la minima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite minimo per l'introduzione delle quote di lavoro. Si tenga presente che, nel caso di utilizzo della funzionalità di recupero giochi in avanti (backlashmode = 1 e 3), la corsa minima dell'asse è pari a [minpos - overpos]. Valore espresso in unità di misura (Um). |
| maxpos | L | R | R-W | - | Maximum position (-999999 ÷ 999999) Definisce la massima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite massimo per l'introduzione delle quote di lavoro. Si tenga presente che, nel caso di utilizzo della funzionalità di recupero giochi in indietro (backlashmode = 2 e 4), la corsa massima dell'asse è pari a [maxpos + overpos]. Valore espresso in unità di misura (Um). |
| slowpos | W | R | R-W | - | Slow position (0 ÷ 9999) È la distanza dalla quota di posizionamento alla quale è eccitata l'uscita di rallentamento per concludere il posizionamento alla velocità lenta. Valore espresso in unità di misura (Um). |
| tollp | W | R | R-W | - | Positive tolerance (0 ÷ 9999) È il limite di tolleranza positivo consentito al posizionamento (massimo errore per eccesso). Valore espresso in Um/10 (QPS). |
| tolln | W | R | R-W | - | Negative tolerance (0 ÷ 9999) È il limite di tolleranza negativo consentito al posizionamento (massimo errore per difetto). Valore espresso in Um/10 (QPS). |
| tinv | W | R | R-W | - | Direction inversion delay (0 ÷ 999) E' utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento. Valore introdotto è espresso in centesimi di secondo. |
| slowdly | W | R | R-W | - | Slow delay (0 ÷ 999) Quando il posizionamento entra nella fascia di rallentamento, l'uscita di movimento è disattivata per un tempo determinato dal parametro slowpos. L'uscita di rallentamento è attivata con tempo slowpos/2 prima dell'uscita di movimento. Valore espresso in centesimi di secondo (s/100). |
| tbrake | W | R | R-W | - | Brake time È il tempo che intercorre, allo start posizionamento, tra lo sblocco del freno (in funzione del parametro reaktype) e l'attivazione delle uscite di movimento. Viene espresso in centesimi di secondo (s/100). Range valido: 0 ÷ 999 |
| overpos | W | R | R-W | - | Over position (0 ÷ 9999) Oltrequota per il recupero giochi e/o delta minimo di posizionamento. Se impostato a zero non è eseguito il recupero giochi. Valore espresso in unità di misura (Um). |
| bklashmode | B | R | R-W | - | Backslash mode Seleziona il tipo di recupero giochi: 0 = posizionamento senza recupero giochi, 1 = posizionamento con recupero giochi avanti, 2 = posizionamento con recupero giochi indietro, 3 = posizionamento con recupero giochi avanti senza rallentamento, 4=posizionamento con recupero giochi indietro senza rallentamento. Se il parametro è fuori dai limiti ammessi, utilizza per default il modo 0. |
| ninert | B | R | R-W | - | Inertia number (1 ÷ 8) È il numero di fasce d'inerzia in cui si vuole suddividere l'asse. Se è impostato il valore zero, si considera una sola fascia. |
| maxiner | W | R | R-W | - | Maximum inertia (0 ÷ 9999) È il massimo valore di variazione dell'inerzia dopo ogni posizionamento. Se il valore calcolato supera tale parametro, è segnalato con l'attivazione dello stato st_erin. Se il valore è posto a zero, il controllo è inibito. Valore espresso in Um/10 (QPS). |
| toldly | W | R | R-W | - | Tolerance delay (0 ÷ 9999) Definisce il tempo di ritardo attivazione tolleranza espresso in ms) allo scadere del quale lasse è considerato sicuramente fermo. |
| inertmode | B | R | R-W | - | Inertia mode selection Indica il tipo di ricalcolo inerzia eseguito dal device al termine del posizionamento: 0 = ricalcolo inerzie disabilitato, 1 = ricalcolo inerzie eseguito solo se il posizionamento si conclude fuori tolleranza, 2 = ricalcolo inerzie eseguito ad ogni posizionamento. |
| tool | L | R | R-W | - | Tool thickness (-999999 ÷ 999999) É il valore dello spessore utensile. Questo valore, espresso in Um/10 (QPS), è sommato alla quota di posizionamento setpos quando è comandato START. La quota finale dell'asse sarà quindi data da: setpos + tool. |
| setpos | L | R | R-W | - | Setted position (-999999 ÷ 999999) É la quota di posizionamento impostata. Essa è posta in esecuzione dal comando START. Se essa è cambiata durante il posizionamento, l'asse si posiziona in ogni caso alla quota precedente. Valore espresso in unità di misura (Um). |
| iner01 ÷ iner16 | W | R | R-W | - | Inertia 01 ÷ 16 value Sono le 16 memorie dei valori di inerzia. Se il parametro dobiner è 0, verranno utilizzate dal device solamente le prime otto (iner01 ÷ iner08). Valore espresso in Um/10 (QPS). |
| dobiner | B | R | R-W | - | Double inertia Con questo parametro è possibile scegliere di ricalcolare un'inerzia unica per ogni fascia in cui è divisa l'asse oppure di averne due per ogni fascia: una per ogni direzione d'arrivo dell'asse. 0 =Memoria inerzia di fascia uguale per le due direzioni, 1 = Memoria inerzia di fascia distinta per ogni direzione. |
| enstol | B | R | R-W | - | Enable start in tolerance Abilitazione start con asse in tolleranza: 0 = START in tolleranza disabilitato. Al comando di START, se la quota di posizionamento è fuori dalla tolleranza, viene eseguito il movimento e lo stato st_sttoll viene posto a 0, altrimenti, lo stato st_sttoll viene posto a 1 e l'asse rimane fermo.“ 1 = START in tolleranza abilitato. Al comando di START l'asse esegue un riPosizionamento alla quota in uso e lo stato st_sttoll è disabilitato. |
| prsmode | B | R | R-W | - | Preset mode Definisce il tipo di ricerca di preset: 0 = Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento, incontra la camma di abilitazione, inverte la direzione ed in lento, sul fronte di discesa relativo al segnale di camma, carica la quota di preset, 1 = Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento, incontra la camma d'abilitazione, inverte la direzione ed in lento acquisisce il primo impulso di zero (dopo la disattivazione del segnale di camma), 2 = Non è attivata la procedura di ricerca preset con movimentazione dell'asse. Il conteggio è aggiornato alla quota di preset all'attivazione dell'abilitazione impulso di zero. |
| prspos | L | R | R-W | - | Preset position (minpos ÷ maxpos) Definisce il valore che è caricato sul conteggio con la procedura di ricerca di preset. Valore espresso in unità di misura (Um). |
| prsdir | B | R | R-W | - | Preset search direction Definisce la direzione del movimento asse per la ricerca della camma di abilitazione impulso di zero. 0 = L'asse esegue la ricerca in avanti, prima in rapido, poi in lento. 1 = L'asse esegue la ricerca indietro, prima in rapido, poi in lento. 2 = L'asse esegue la ricerca in avanti sempre in lento. 3 = L'asse esegue la ricerca indietro sempre in lento. |
| actiner | B | R | R | - | Actual inertia (0 ÷ 7) Indica la fascia di inerzia in uso. |
| delta | L | R | R-W | - | Delta counter (-999999 ÷ 999999) Variabile d'uso come operando dal comando DELCNT. Valore espresso in unità di misura (Um). |
| decpt | B | R | R-W | - | Decimal point (0 ÷ 3) Definisce la precisione con la quale si intendono impostare le preselezioni e visualizzare i conteggi relativamente all'asse. |
| unitvel | B | R | R-W | - | Velocity unit Definisce se l'unità di tempo della velocità è espressa in minuti o secondi. 0 = Um/min, 1 = Um/sec. |
| frq | L | - | R | - | Actual frequency É il valore della frequenza istantanea dell'asse, considerando una fase dell'encoder. Valore espresso in Hz. |
| vel | L | - | R | - | Actual velocity É il valore della velocità istantanea dell'asse. Il valore è espresso in Um/s o Um/min in base al parametro unitvel e dipende anche dal parametro decpt. |
| breaktype | B | R | R-W | - | Brake type É il tipo di logica d'intervento dell'uscita freno. 0 = L'uscita viene eccitata per la frenata, 1 = L'uscita, normalmente eccitata, viene diseccitata per la frenata. Lo stato st_brake segue lo stato elettrico dell'uscita. |
| slowtype | B | R | R-W | - | Slow type (0 ÷ 999999) É il tipo di calcolo del rallentamento 0 = fisso con parametro slowpos, 1 = proporzionale alla velocità rilevata, 2 = proporzionale al quadrato della velocità rilevata. |
| maxvel | L | R | R-W | - | Maximum velocity Definisce la massima velocità dell'asse. Il valore introdotto è nell'unità di tempo della velocità impostata unitvel. Questo parametro è utilizzato se slowtype ? 0. |
| maxslow | W | R | R-W | - | Maximum slowdown (0 ÷ 9999) É il valore di rallentamento calcolato alla massima velocità dell'asse definita dal parametro maxvel. Questo parametro viene utilizzato se slowtype ? 0. Valore espresso in unità di misura (Um). |
| minslow | W | R | R-W | - | Minimum slowdown (0 ÷ 9999) É il minimo valore di rallentamento che può essere calcolato. Questo parametro viene utilizzato se slowtype ? 0. Valore espresso in unità di misura (Um). |
| exeslow | W | - | R | - | Execution slowdown Se il parametro slowtype ? 0, indica il valore di rallentamento calcolato dal device in funzione della velocità dell'asse. Valore espresso in unità di misura (Um). |
| errcode | B | 0 | R | - | Error code (0 ÷ 100) Indica il tipo d'errore intervenuto nel sistema. Il codice è valido solo se st_error = 1 (Vedi capitolo dedicato). |
| errvalue | B | 0 | R | - | Error value (0 ÷ 100) Indica la causa dell'errore intervenuto nel sistema. Il codice è valido solo se st_error = 1 (Vedi capitolo dedicato). |
| wrncode | B | 0 | R | - | Warning code (0 ÷ 100) Indica il tipo di warning intervenuto nel sistema. Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato). |
| wrnvalue | B | 0 | R | - | Warning value (0 ÷ 100) Indica la causa del warning intervenuto nel sistema. Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato). |
| st_init | F | - | R | - | Initialization Segnalazione di device inizializzato. 0 = Device non inizializzato, 1 = Device inizializzato. |
| st_cntlock | F | R | R | - | Counter locked Segnalazione di conteggio asse bloccato. 0 = Conteggio asse sbloccato, 1 = Conteggio asse bloccato. |
| st_cntrev | F | R | R | - | Counter reversed Segnalazione di conteggio asse invertito 0 = Conteggio asse non invertito, 1 = Conteggio asse invertito. |
| st_movfwd | F | - | R | - | Forward movement Segnala l'eccitazione dell'uscita di movimento avanti. 0 = Uscita avanti non eccitata, 1 = Eccitazione uscita avanti. |
| st_movbwd | F | - | R | - | Backward movement Segnala l'eccitazione dell'uscita di movimento indietro. 0 = Uscita indietro non eccitata, 1 = Eccitazione uscita indietro. |
| st_movslow | F | - | R | - | Slowdown movement Segnala l'eccitazione dell'uscita di rallentamento. 0 = Uscita rallentamento non eccitata, 1 = Eccitazione uscita rallentamento. |
| st_toll | F | - | R | - | Tolerance Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly. 0 = Asse non in tolleranza, 1 = Asse in tolleranza. |
| st_brake | F | - | R | - | Brake Segnala l'eccitazione dell'uscita di freno (per l'attivazione di freni o di dispositivi di bloccaggio dell'asse). 0 = Uscita freno non eccitata, 1 = Eccitazione uscita freno. |
| st_movdir | F | - | R | - | Backward direction Segnalazione della direzione del movimento. 0 = Avanti, 1 = Indietro. |
| st_still | F | 1 | R | - | Still Segnalazione di asse fermo. 0 = Asse in movimento, 1 = Asse fermo. |
| st_erin | F | - | R | - | Inertia ricalculation error Segnala un errore di ricalcolo inerzia. L'indicazione si attiva se il ricalcolo dell'inerzia fornisce un valore maggiore del parametro maxiner. 0 = Ricalcolo inerzia corretto, 1 = Ricalcolo inerzia con valori maggiori di maxiner. |
| st_sttoll | F | - | R | - | Start in tolerance Attivo segnala, se il parametro enstol = 0, che é stato dato un comando di movimento e l'asse era già in tolleranza sulla quota di traguardo. Lo stato rimane invariato fino al prossimo comando di movimento (START,MANSFW, MANFFW, MANSBW, MANFBW). 0 = Start con asse fuori tolleranza, 1 = Start con asse in tolleranza. |
| st_prsok | F | - | R | - | Preset ok Segnalazione di ricerca di preset asse conclusa correttamente. 0 = Ricerca di preset non ancora conclusa o non eseguita, 1 = Ricerca di preset conclusa correttamente. |
| st_prson | F | - | R | - | Preset Segnalazione di ricerca di preset asse in corso. 0 = Ricerca di preset non in corso, 1 = Ricerca di preset in corso. |
| st_regoff | F | 1 | R | - | Regulation off Segnala lo stato di disabilitazione delle uscite e dei comandi di posizionamento. 0 = Uscite di movimento abilitate, 1 = Uscite di movimento disabilitate. |
| st_error | F | - | R | - | Status of device error Indica lo stato d'errore nel device. Per la decodifica dell'errore si deve fare riferimento alla variabile errcode ed errvalue. 0 = Errore non presente, 1 = Errore presente, All'accensione per default è posto a zero. |
| st_warning | F | - | R | - | Status of device warning Indica lo stato di warning nel device. Per la decodifica del warning si deve fare riferimento alla variabile wrncode e wrnvalue. 0 = Warning non presente, 1 = Warning presente, All'accensione per default è posto a zero. |
| st_int | F | - | R | - | Status of interrupt line Indica lo stato della linea d'interrupt 0 = Ingresso in interrupt disattivo, 1 = Ingresso in interrupt attivo. All'accensione per default è posto a zero. |
Nessuna limitazione.
;*************************************************************************************
; Nome Modulo: Ex_Oopos3.CNF Progetto: Ex_OOPOS3
; Autore: QEM srl Data: 01/05/99
; Sistema: QMove1 / QCL3 Libreria: 1LIB4001
; Funzionalità: Esempio gestione OOPOS3 Release: 0
;-------------------------------------- Note -----------------------------------------
; [1] - Applicativo di esempio per utilizzo device OOPOS 3
;*************************************************************************************
;-------------------------------------------------------------------------------------
; Definizione Costanti
;-------------------------------------------------------------------------------------
CONST
;-------------------------------------------------------------------------------------
; Definizione Variabili SYSTEM
;-------------------------------------------------------------------------------------
SYSTEM
slQuotaPos L ;Variabile per quota di posizionamento
;-------------------------------------------------------------------------------------
; Definizione Variabili GLOBAL
;-------------------------------------------------------------------------------------
GLOBAL
gfMovMan F ;Flag segnalazione movimenti manuali in
;corso
gfMovAuto F ;Flag segnalazione movimenti automatici
;in corso
;-------------------------------------------------------------------------------------
; Definizione Variabili TIMER
;-------------------------------------------------------------------------------------
TIMER
;-------------------------------------------------------------------------------------
; Definizione DATAGROUP
;-------------------------------------------------------------------------------------
;DATAGROUP
;-------------------------------------------------------------------------------------
; Configurazione Bus
;-------------------------------------------------------------------------------------
BUS
1 1CPUD 02
2 1MIXA 00
3 .
4 .
;-------------------------------------------------------------------------------------
; Definizione Variabili INPUT
;-------------------------------------------------------------------------------------
INPUT
ifAvMan F 2.INP01 ;Ingresso di avanti manuale
ifInMan F 2.INP02 ;Ingresso di indietro manuale
ifStart F 2.INP03 ;Ingresso di START asse
ifStop F 2.INP04 ;Ingresso di STOP asse
;-------------------------------------------------------------------------------------
; Definizione Variabili OUTPUT
;-------------------------------------------------------------------------------------
OUTPUT
ofToll F 2.OUT04 ;Uscita di tolleranza asse
;-------------------------------------------------------------------------------------
; Dichiarazione device interni
;-------------------------------------------------------------------------------------
INTDEVICE
;Nome Tipo TCamp Contatore Inter AbilZero OutAva OutInd OutDir OutMov
Asse OOPOS3 0004 2.CNT01 1 2.INP01 2.OUT01 2.OUT 02 X.X X.X
OutRal OutFre
2.OUT03 X.X
END
;-------------------------------------------------------------------------------------
; Nome File: TASK_00.MOD
; Progetto: EX_OOPOS3
; Descrizione: Gestione Posizionamento
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
; Operazioni di Inizializzazione Asse
;-------------------------------------------------------------------------------------
Asse:measure = 10000 ;Spazio in 1 giro encoder(Um)
Asse:pulse = 4000 ;impulsi giro encoder
Asse:maxpos = 999999 ;Quota massima
Asse:minpos = -999999 ;Quota minima
Asse:slowpos = 100 ;Quota di rallentamento
Asse:tollp = 10 ;Tolleranza positiva
Asse:tolln = 50 ;Tolleranza negativa
Asse:tinv = 50 ;Tempo di inversione
Asse:slowdly = 50 ;Tempo di rallentamento
Asse:tbrake = 30 ;Tempo di intervento freno
Asse:overpos = 0 ;Oltrequota recupero giochi
Asse:bklashmode = 0 ;Tipo recupero giochi
Asse:ninert = 1 ;Numero fasce di inerzia
Asse:maxiner = 100 ;Massima inerzia ricalcolata
Asse:toldly = 50 ;Tempo ritardo segnalazione tolleranza
Asse:inertmode = 1 ;Tipo di ricalcolo inerzia
Asse:tool = 0 ;Spessore lama
Asse:dobiner = 0 ;Abilitazione inerzie sdoppiate
;(avanti e indietro)
Asse:enstol = 0 ;Abilitazione START con l'asse in tolleranza
Asse:prsmode = 0 ;Tipo di ricerca di preset
Asse:prspos = 0 ;Quota di preset
Asse:prsdir = 0 ;Direzione della ricerca di preset
Asse:decpt = 1 ;Cifre decimali
Asse:unitvel = 1 ;Unità di tempo della velocità
Asse:breaktype = 0 ;Logica di intervento del freno
Asse:slowtype = 0 ;Tipo di calcolo rallentamento
Asse:maxvel = 1000 ;Velocità massima
Asse:maxslow = 8 ;Rallentamento calcolato massimo
Asse:minslow = 80 ;Rallentamento calcolato minimo
INIT Asse ;Inizializza il device
WAIT Asse:st_init ;Attendi che il device sia inizializzato
CNTUNLOCK Asse ;Sblocca conteggio
WAIT NOT Asse:st_cntlock ;Attendi che il conteggio sia sbloccato
CNTDIR Asse ;Imposta il senso del conteggio
WAIT NOT Asse:st_cntrev ;Attendi che sia impostato il senso del
;conteggio
REGON Asse ;Abilita la regolazione
WAIT NOT Asse:st_regoff ;Attendi l'abilitazione alla regolazione
IF (slQuotaPos EQ 0) ;Nel caso in cui la quota di posizionamento
;dell'asse sia zero
slQuotaPos = 2000 ;Imposta una quota di posizionamento
ENDIF
;-------------------------------------------------------------------------------------
; Operazioni di Posizionamento
; ------------------------------ variabili utilizzate -------------------------------
; slQuotaPos: Variabile impostabile che rappresenta la quota di posizionamento dell'asse
; -------------------------------- flag utilizzati ----------------------------------
; gfMovMan: movimento manuale in corso
; gfMovAuto: Movimento automatico in corso
;-------------------------------------------------------------------------------------
MAIN:
;-------------------------------------------------------------------------------------
; Gestione uscite
;-------------------------------------------------------------------------------------
ofToll = Asse:st_toll ;Imposto l'uscita di tolleranza come lo
;stato di tolleranza
;-------------------------------------------------------------------------------------
; Gestione movimenti automatici
;-------------------------------------------------------------------------------------
IF ifStart ;Attende l'ingresso di START
IF NOT gfMovMan ;Controlla che non ci siano movimenti
;manuali
IF Asse:st_still ;Controlla che l'asse sia fermo
Asse:setpos = slQuotaPos ;Imposta la quota di posizionamento
START Asse ;Esegue lo start dell'asse
gfMovAuto = 1 ;Segnala movimento automatico in corso
ENDIF
ENDIF
ENDIF
IF ifStop ;Attende l'ingresso di STOP
IF NOT Asse:st_still ;Controlla che l'asse NON sia fermo
STOP Asse ;Esegue lo stop dell'asse
ENDIF
ENDIF
IF gfMovAuto ;Controlla segnalazione movimento
;automatico in corso
IF Asse:st_still ;Controlla che l'asse sia fermo
gfMovAuto = 0 ;Resetta stato di movimento Automatico
ENDIF
ENDIF
;-------------------------------------------------------------------------------------
; Gestione movimenti manuali
;-------------------------------------------------------------------------------------
IF ifAvMan ;Attende l'ingresso di movimento manuale
IF NOT (gfMovAuto OR gfMovMan) ;Controlla che non ci siano movimenti
;automatici o manuali
IF Asse:st_still ;Controlla che l'asse sia fermo
MANFFW Asse ;Avanti asse in manuale
gfMovMan = 1 ;Segnala movimento manuale in corso
ENDIF
ENDIF
ENDIF
IF ifInMan ;Attende l'ingresso di movimento manuale
IF NOT (gfMovAuto OR gfMovMan) ;Controlla che non ci siano movimenti
;autometici o manuali
IF Asse:st_still ;Controlla che l'asse sia fermo
MANFBW Asse ;Avanti asse in manuale
gfMovMan = 1 ;Segnala movimento manuale in corso
ENDIF
ENDIF
ENDIF
IF gfMovMan ;Se l'asse si muove in manuale
IF NOT (ifAvMan OR ifInMan) ;Se gli ingressi di avanti e indietro
;manuale sono OFF
STOP Asse ;Ferma l'asse
gfMovMan = 0 ;Togli la segnalazione di asse in
;movimento manuale
ENDIF
ENDIF
;-------------------------------------------------------------------------------------
; Operazioni finali
;-------------------------------------------------------------------------------------
WAIT 1
JUMP MAIN
END